#ifndef PAJARITO_H
#define	PAJARITO_H

#include <string>
#include "Actor.h"

using namespace std;
using namespace TP::Juego::Arena;
using namespace TP::Juego::Arena::Utilidades;

namespace TP { namespace Juego { namespace Arena { namespace Actores {

class Pajarito : public Actor {
public:
    
    Pajarito();
    
    Pajarito(const string& pNombre);
    
    virtual ~Pajarito();
    
    virtual IColisionado* colisionar (IColisionado* pColisionado);
    
    virtual int getPuntaje() = 0;
    
    virtual string aXML();
    
    virtual string aXML(const string& pPath);
    
    virtual void parseXML (const string& pDescriptor);

    virtual TiXmlElement* aElementoXML () = 0;
    
    virtual void deElementoXML (TiXmlElement* pElemento) = 0;    
    
    virtual Actor* colisionarContraActor(Actor* pActor);
    
    virtual Utilidad* colisionarContraUtilidad(Utilidad* pUtilidad);
    
    virtual Perimetro* colisionarContraPerimetro (Perimetro* pPerimetro);
    
    virtual Piso* colisionarContraPiso (Piso* pPiso);
    
    virtual double getAlturaRebote() const = 0;
    
private:
    
    // Calcula la nueva velocidad de disparo del pájaro después de chocar
    // contra el piso.
    double _calcularNuevaVelocidad();
    
private:
    double _altura_maxima_salto_actual;
};
}}}}

#endif	/* PAJARITO_H */